local opt = vim.opt

-- 光标上下保留四行
opt.splitright = true --
opt.splitbelow = true --  新建窗口时, 窗口会往下边放

-- 不自动换行, 用 <leader>0 切换
opt.wrap = false

-- 上下滚动时光标离窗口上下边界 3 行
opt.scrolloff = 3
-- 左右移动时,光标离左右窗口边界保持88个字符的距离
opt.sidescrolloff = 8

-- 启用代码折叠
opt.foldenable = true
--  折叠标识为 {{{ code }}}
opt.foldmethod = "marker"
-- if not set this, fold will be everywhere
opt.foldlevel = 99

-- 设置相对行号
opt.number = true
opt.relativenumber = true

-- -- utf8
opt.encoding = "UTF-8"
opt.fileencoding = "utf-8"

-- 不在单词内部换行
opt.linebreak = true

-- 添加拼写支持
opt.spell = false

-- 左右键可以已到下一行或者上一行
opt.whichwrap = "b,s,<,>,[,],h,l"

-- 高亮光标所在行
opt.cursorline = true

opt.hlsearch = false

-- 禁止创建备份文件
opt.backup = false
opt.writebackup = false
opt.swapfile = false
opt.undofile = false

-- smaller updatetime
opt.updatetime = 300

-- 右边添加参考线
-- opt.colorcolumn = "100"

-- 设置 timeoutlen 为等待键盘快捷键连击时间300毫秒，可根据需要设置
opt.timeout = true
opt.timeoutlen = 300

-- 使用增强状态栏插件后不再需要 vim 的模式提示
opt.showmode = false

-- 弹出菜单最多显示10行
opt.pumheight = 10

-- 在多数终端上修正退格键Backspace的行为
-- " indent  " 删除自动缩进所产生的缩进
-- " eol     " 在行首按 backspace 与上一行合并
-- " start   " 删除旧的内容(打开文件之前的内容)
-- " 0       " 只能删除新内容,但新输入的自动缩进和换行不可删除
-- " 1       " 可删除新输入的内容,包括自动缩进和合并行. 不可删除旧内容,包括自动缩进和合并行
-- " 2       " 啥都可以删,等同于 backspace=indent,eol,start
opt.backspace = "indent,eol,start"

--opt.cscopequickfix = "s-,c-,d-,i-,t-,e-"

-- 允许隐藏被修改过的buffer
opt.hidden = true

-- 命令行高为0, 为隐藏命令行
opt.cmdheight = 0

-- 光标可以定位到最后一个字的后面
opt.virtualedit = "block,onemore"

-- 数字宽度设置为4
opt.numberwidth = 4



-- 2 总是显示标签页，0 不显示，1 出现多个标签页才显示
opt.showtabline = 2
-- 最多可以打开15个标签页，默认10个
opt.tabpagemax = 15

-- 当文件被外部程序修改时，自动加载
opt.autoread = true
opt.hidden = true
-- 搜索忽略大小写
opt.ignorecase = true
-- 如果有一个大写字母，则切换到大小写敏感查找
opt.smartcase = true
-- 搜索逐字高亮
opt.incsearch = true

-- 退出时文件没保存,会问你是否保存
opt.confirm = true

-- 启用鼠标, nvim 默认已经开启
opt.mouse = "a"

-- 启用 24-bit 彩色模式
opt.termguicolors = true
-- 行号前面多出一列,用于插件提示
opt.signcolumn = "yes"

opt.background = "dark"

-- 自动补全不自动选中
opt.completeopt = "menu,menuone,noselect,noinsert"
opt.wildmenu = true

-- 关于缩进
opt.tabstop = 4
-- >> << 时移动长度
opt.shiftwidth = 4
opt.softtabstop = 4
opt.shiftround = true
opt.expandtab = true
-- 新行对齐当前行
opt.autoindent = true
opt.cindent = true
-- 开启新行时使用智能自动缩进
opt.smartindent = true

-- 共享系统剪贴板
opt.clipboard = "unnamedplus"

-- 高亮显示括号
opt.showmatch = true

-- 自动切换当前目录为当前文件所在的目录
-- opt.autochdir = true

-- setup must be called before loading
-- vim.cmd[[colorscheme tokyonight]]
--vim.cmd.colorscheme("tokyonight")
--vim.cmd("set background=dark")
--vim.cmd("colorscheme habamax")

-- vim Options
vim.cmd([[

" 插入模式显示绝对行号，普通模式显示相对行号
autocmd InsertEnter * :set norelativenumber number
autocmd InsertLeave * :set relativenumber number

set noai nosi " 打开继承缩进，关闭预测缩进

" 快捷文本
ab qmail 1014150883@qq.com
ab gmail luiswuking@gmail.com
]])

-- 用o换行不要延续注释
vim.api.nvim_create_autocmd({ "BufEnter" }, {
    pattern = { "*" },
    callback = function()
        -- vim.opt.formatoptions = vim.opt.formatoptions - { "c", "r", "o" }
        vim.opt.formatoptions = vim.opt.formatoptions
            - "o" -- O and o, don't continue comments
            + "r" -- But do continue when pressing enter.
    end,
})

-- 高亮复制区域
vim.api.nvim_create_autocmd({ "TextYankPost" }, {
	pattern = { "*" },
	callback = function()
		vim.highlight.on_yank({
			timeout = 300,
		})
	end,
})
